package org.szgb.console.config;

import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SwaggerConfig {

    /**
     * 默认模块
     */
    @Bean
    public GroupedOpenApi defaultGroup() {
        return GroupedOpenApi.builder()
                .group("默认")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console")
                .build();
    }
    /**
     * 【合同】-电费模块
     */
    @Bean
    public GroupedOpenApi htElectricityGroup() {
        return GroupedOpenApi.builder()
                .group("【合同】-电费")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.ht.electricity")
                .build();
    }

    /**
     * 【合同】-抄表模块
     */
    @Bean
    public GroupedOpenApi htMeterGroup() {
        return GroupedOpenApi.builder()
                .group("【合同】-抄表")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.ht.meter")
                .build();
    }

    /**
     * 【专项】模块
     */
    @Bean
    public GroupedOpenApi zxGroup() {
        return GroupedOpenApi.builder()
                .group("【专项】")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.zx")
                .build();
    }

    /**
     * 【查线核图】模块
     */
    @Bean
    public GroupedOpenApi cxhtGroup() {
        return GroupedOpenApi.builder()
                .group("【查线核图】")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.cxht")
                .build();
    }

    /**
     * 【系统】-人员管理
     */
    @Bean
    public GroupedOpenApi sysUserGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-人员管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.user")
                .build();
    }

    /**
     * 【系统】-字典管理
     */
    @Bean
    public GroupedOpenApi sysDictGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-字典管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.dict")
                .build();
    }

    /**
     * 【系统】-设备管理
     */
    @Bean
    public GroupedOpenApi sysEquipmentGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-设备管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.equipment")
                .build();
    }

    /**
     * 【系统】-文件管理
     */
    @Bean
    public GroupedOpenApi sysFileGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-文件管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.file")
                .build();
    }

    /**
     * 【系统】-线路管理
     */
    @Bean
    public GroupedOpenApi sysLineGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-线路管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.line")
                .build();
    }

    /**
     * 【系统】-角色管理
     */
    @Bean
    public GroupedOpenApi sysRoleGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-角色管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.role")
                .build();
    }

    /**
     * 【系统】-系统管理
     */
    @Bean
    public GroupedOpenApi sysSystemGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-系统管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.system")
                .build();
    }

    /**
     * 【系统】-待办管理
     */
    @Bean
    public GroupedOpenApi sysTodoGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-待办管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.todo")
                .build();
    }

    /**
     * 【系统】-部门管理
     */
    @Bean
    public GroupedOpenApi sysDepartmentGroup() {
        return GroupedOpenApi.builder()
                .group("【系统】-部门管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.sys.department")
                .build();
    }

    /**
     * 【新线筹备】-问题库管理
     */
    @Bean
    public GroupedOpenApi sysNlmsIamsGroup() {
        return GroupedOpenApi.builder()
                .group("【新线筹备】-问题库管理")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.nlms.iams")
                .build();
    }

    /**
     * 测试
     */
    @Bean
    public GroupedOpenApi testGroup() {
        return GroupedOpenApi.builder()
                .group("【测试】")  // 大类名称（在 UI 顶部下拉菜单中显示）
                .packagesToScan("org.szgb.console.test")
                .build();
    }
}
